#pragma once
#include <windows.h>
#include <string>

inline HFONT CreateFontSize(int size) {
    HFONT hFont = CreateFontW(
        size,                        // 字体高度（字号）
        0,                           // 字体宽度（0表示根据高度自动计算）
        0,                           // 文本倾斜角度
        0,                           // 字体倾斜角度
        FW_NORMAL,                   // 字体粗细（FW_NORMAL=正常）
        FALSE,                       // 是否斜体
        FALSE,                       // 是否下划线
        FALSE,                       // 是否删除线
        DEFAULT_CHARSET,             // 字符集
        OUT_DEFAULT_PRECIS,          // 输出精度
        CLIP_DEFAULT_PRECIS,         // 裁剪精度
        DEFAULT_QUALITY,             // 输出质量
        DEFAULT_PITCH | FF_DONTCARE, // 字体系列
        L"微软雅黑"                  // 字体名称
    );
    return hFont;
}

inline int GetCenterWidth(int MainWindowWidth, int WindowWidth) {
    return (MainWindowWidth - WindowWidth) / 2;
}

inline void LoadAppIcon(HWND hWnd) {
    HICON hIcon = (HICON)LoadImageW(
        NULL,
        L"icos/favicon.ico",
        IMAGE_ICON,
        0, 0,
        LR_LOADFROMFILE | LR_DEFAULTSIZE);

    if (!hIcon) {
        // 加载失败时使用系统默认图标
        hIcon = LoadIcon(NULL, IDI_APPLICATION);
    }

    SendMessageW(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
    SendMessageW(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
}

// 将wstring转换为string（UTF-8编码）
inline std::string wstring_to_utf8(const std::wstring &wstr) {
    if (wstr.empty()) return std::string();

    int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(),
                                          NULL, 0, NULL, NULL);
    std::string str(size_needed, 0);
    WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(),
                        &str[0], size_needed, NULL, NULL);
    return str;
}